summaryrefslogtreecommitdiffstats
path: root/src/Items/ItemBigFlower.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Items/ItemBigFlower.h')
-rw-r--r--src/Items/ItemBigFlower.h36
1 files changed, 12 insertions, 24 deletions
diff --git a/src/Items/ItemBigFlower.h b/src/Items/ItemBigFlower.h
index a67ca8d0a..12ebc2188 100644
--- a/src/Items/ItemBigFlower.h
+++ b/src/Items/ItemBigFlower.h
@@ -24,41 +24,29 @@ public:
- virtual bool GetBlocksToPlace(
- cWorld & a_World,
- cPlayer & a_Player,
- const cItem & a_EquippedItem,
- const Vector3i a_PlacedBlockPos,
- eBlockFace a_ClickedBlockFace,
- const Vector3i a_CursorPos,
- sSetBlockVector & a_BlocksToPlace
- ) override
+ virtual bool CommitPlacement(cPlayer & a_Player, const cItem & a_HeldItem, const Vector3i a_PlacePosition, const eBlockFace a_ClickedBlockFace, const Vector3i a_CursorPosition) override
{
- // Can only be placed on dirt:
- if ((a_PlacedBlockPos.y <= 0) || !IsBlockTypeOfDirt(a_World.GetBlock(a_PlacedBlockPos.addedY(-1))))
+ // Needs at least two free blocks to build in:
+ if (a_PlacePosition.y >= (cChunkDef::Height - 1))
{
return false;
}
- // Needs at least two free blocks to build in
- if (a_PlacedBlockPos.y >= cChunkDef::Height - 1)
- {
- return false;
- }
-
- auto TopPos = a_PlacedBlockPos.addedY(1);
+ const auto & World = *a_Player.GetWorld();
+ const auto TopPos = a_PlacePosition.addedY(1);
BLOCKTYPE TopType;
NIBBLETYPE TopMeta;
- a_World.GetBlockTypeMeta(TopPos, TopType, TopMeta);
- cChunkInterface ChunkInterface(a_World.GetChunkMap());
+ World.GetBlockTypeMeta(TopPos, TopType, TopMeta);
- if (!cBlockHandler::For(TopType).DoesIgnoreBuildCollision(ChunkInterface, TopPos, a_Player, TopMeta))
+ if (!cBlockHandler::For(TopType).DoesIgnoreBuildCollision(World, a_HeldItem, TopPos, TopMeta, a_ClickedBlockFace, false))
{
return false;
}
- a_BlocksToPlace.emplace_back(a_PlacedBlockPos, E_BLOCK_BIG_FLOWER, a_EquippedItem.m_ItemDamage & 0x07);
- a_BlocksToPlace.emplace_back(TopPos, E_BLOCK_BIG_FLOWER, E_META_BIG_FLOWER_TOP);
- return true;
+ return a_Player.PlaceBlocks(
+ {
+ { a_PlacePosition, E_BLOCK_BIG_FLOWER, static_cast<NIBBLETYPE>(a_HeldItem.m_ItemDamage & 0x07) },
+ { TopPos, E_BLOCK_BIG_FLOWER, E_META_BIG_FLOWER_TOP }
+ });
}
};